package pe.com.casadesign.service.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Funciones {
	
	public static boolean escribirArchivo(int codigoProducto, 
										  String dataImagen) throws IOException {
		String direccionArchivo;
		File carpeta = null;
		File archivo = null;
		FileWriter fWriter = null;
		BufferedWriter salida = null;
		boolean resultado = false;

		try {
			// Obteniendo ruta del directo de imagenes
			direccionArchivo = String.valueOf(ParametrosAplicacionUtil.getParametroAplicacion(Constantes.ID_DIRECTORIO_IMAGENES));
			
			// Varificando si existe directorio y si no existe entonces lo crea
			carpeta = new File(direccionArchivo);
			if(!carpeta.exists()){ carpeta.mkdirs(); }
			
			// Concatenando ruta del directorio con el nombre de la imagen
			direccionArchivo +=  String.format(String.valueOf(ParametrosAplicacionUtil.getParametroAplicacion(Constantes.ID_FORMATO_NOMBRE_IMAGENES_PRODUCTO)),
							   				   codigoProducto);
			
			// Estableciendo ruta completa del archivo de imagen
			archivo = new File(direccionArchivo);
			fWriter = new FileWriter(archivo, false);
			salida = new BufferedWriter(fWriter);

			// Escribiendo data de la imagen en base64
			salida.write(dataImagen);

			resultado = true;
		} finally{
			if(salida != null){ salida.close(); }
			if(fWriter != null){ fWriter.close(); }
		}

		return resultado;
	}

	public static String leerArchivo(int codigoProducto) throws IOException {
		String direccionArchivo;
		File carpeta = null;
		File archivo = null;
		FileReader fReader = null;
		BufferedReader leer = null;
		StringBuilder dataImagen = null;

		try {
			// Obteniendo ruta del directo de imagenes
			direccionArchivo = String.valueOf(ParametrosAplicacionUtil.getParametroAplicacion(Constantes.ID_DIRECTORIO_IMAGENES));
			
			// Varificando si existe directorio y si no existe entonces lo crea
			carpeta = new File(direccionArchivo);
			if(!carpeta.exists()){ carpeta.mkdirs(); }
			
			// Concatenando ruta del directorio con el nombre de la imagen
			direccionArchivo +=  String.format(String.valueOf(ParametrosAplicacionUtil.getParametroAplicacion(Constantes.ID_FORMATO_NOMBRE_IMAGENES_PRODUCTO)),
							   				   codigoProducto);
	
			// Inicializando contenedor de imagen en base64
			dataImagen = new StringBuilder();

			// Estableciendo ruta completa del archivo de imagen
			archivo = new File(direccionArchivo);
			
			// Validar si existencia
			if (archivo.exists()) {
				fReader = new FileReader(archivo);
				leer = new BufferedReader(fReader);

				String linea;

				while ((linea = leer.readLine()) != null) {
					dataImagen.append(linea);
				}
			}
		}finally{
			if(leer != null){ leer.close(); }
			if(fReader != null){ fReader.close();}
		}

		return dataImagen.toString();
	}
}
